www.gusucode.com > 阵列信号处理书的源码 > MATALB 程序/10.L型阵下基于2D-MUSIC的二维DOA估计算法/main_2d_doa_music.m
%%two dimensinal DOA estimation using 2D-MUSIC algorith for L-shaped array % Developed by xiaofei zhang (南京航空航天大学 电子工程系 张小飞) % EMAIL:zhangxiaofei@nuaa.edu.cn, fei_zxf@163.com clear all close all clc twpi = 2*pi; rad = pi/180; deg = 180/pi; kelm = 8; snr = 10; iwave = 3; theta = [10 30 50]; fe = [15 25 35]; n = 100; dd = 0.5; d = 0:dd:(kelm-1)*dd; d1 = dd:dd:(kelm-1)*dd; Ax = exp(-j*twpi*d.'*(sin(theta*rad).*cos(fe*rad))); Ay = exp(-j*twpi*d1.'*(sin(theta*rad).*sin(fe*rad))); A = [Ax;Ay]; S = randn(iwave,n); X = A*S; X1 = awgn(X,snr,'measured'); Rxx = X1*X1'/n; [EV,D] = eig(Rxx); [EVA,I] = sort(diag(D).'); EV = fliplr(EV(:,I)); Un = EV(:,iwave+1:end); for ang1 = 1:90 for ang2 = 1:90 thet(ang1) = ang1-1; phim1 = thet(ang1)*rad; f(ang2) = ang2-1; phim2 = f(ang2)*rad; a1 = exp(-j*twpi*d.'*sin(phim1)*cos(phim2)); a2 = exp(-j*twpi*d1.'*sin(phim1)*sin(phim2)); a = [a1;a2]; SP(ang1,ang2) = 1/(a'*Un*Un'*a); end end SP=abs(SP); SPmax=max(max(SP)); SP=SP/SPmax; h = mesh(thet,f,SP); set(h,'Linewidth',2) xlabel('elevation(degree)') ylabel('azimuth(degree)') zlabel('magnitude(dB)')